package org.hfy.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.hfy.dto.ContractAuditDTO;
import org.hfy.dto.ContractQueryDTO;
import org.hfy.entity.Contract;

/**
 * 合同服务接口
 * 
 * @author hfy
 * @version 1.0
 */
public interface ContractService extends IService<Contract> {

    /**
     * 分页查询合同列表
     */
    IPage<Contract> getContractPage(ContractQueryDTO query);

    /**
     * 根据ID查询合同详情（包含报价单信息）
     */
    Contract getContractWithQuotationById(Long id);

    /**
     * 合同审核
     */
    boolean auditContract(Long id, ContractAuditDTO auditDTO);

    /**
     * 生成合同PDF
     *
     * @param id 合同ID
     * @return PDF字节数组
     */
    byte[] generateContractPdf(Long id);

    /**
     * 生成合同HTML内容
     *
     * @param id 合同ID
     * @return HTML内容字符串
     */
    String generateContractHtml(Long id);

    /**
     * 下载合同PDF
     *
     * @param id 合同ID
     * @return PDF字节数组
     */
    byte[] downloadContractPdf(Long id);

    /**
     * 根据报价单ID生成合同
     */
    Long generateContractByQuotationId(Long quotationId);

    /**
     * 生成合同编号
     */
    String generateContractNo();
} 